/*
 * conexion.h
 *
 *  Created on: 11/12/2009
 *      Author: teledhil
 */

#ifndef CONEXION_H_
#define CONEXION_H_

int enviar(int fConexion, char *mensaje, int longMensaje);
// Envia _mensaje_ de longitud _longMensaje_ por el descriptor _fConexion_

int recibir(int fConexion, char *mensaje, int longMensaje);
// Recibe _mensaje_ de longitud _longMensaje_ por el descriptor _fConexion_

int socket_cliente(const char *hostname, int puerto);
// Devuelve un descriptor que comunica con el puerto _puerto_ del servidor _hostname_

int socket_servidor(int puerto);
// Crea un socket en el puerto _puerto_ para atender peticiones

int esperar_peticion(int sock);
// Cuando el servidor reciba una petición, devuelve el descriptor necesario
// para establecer la comunicación (con _enviar y _recibir_)

int cerrar_socket(int sock);
// Cierra un socket o un descriptor que ya no vaya a utilizarse


#endif /* CONEXION_H_ */


/* Ejemplos de uso:
 * 		-Cliente:
 * 			...
 * 			fd=socket_cliente(www.google.es, 4662);
 * 			...
 * 			enviar(fd,mensaje,100);
 * 			...
 * 			recibir(fd,mensaje,50);
 * 			...
 * 			cerrar_socket(fd);
 *
 * 		-Servidor:
 * 			...
 * 			socket=socket_servidor(4662);
 * 			for(;;) {
 * 				fd=esperar_peticion(socket);
 * 				recibir(fd,mensaje,100);
 * 				...
 * 				enviar(fd,mensaje, 50);
 * 				...
 * 				cerrar_socket(fd);
 * 			}
 * 			cerrar_socket(socket);
 */
